package Q5_03_Flip_Bit_to_Win;
public class QuestionA {
public static int SEQUENCE_LENGTH = 32;
public static boolean getBit(int num, int i) {
return ((num & (1 << i)) != 0);
}
public static int longestSequence(int n) {
int maxSeq = 0;
for (int i = 0; i < SEQUENCE_LENGTH; i++) {
maxSeq = Math.max(maxSeq, longestSequenceOf1s(n, i));
}
return maxSeq;
}
public static int longestSequenceOf1s(int n, int indexToIgnore) {
int max = 0;
int counter = 0;
for (int i = 0; i < SEQUENCE_LENGTH; i++) {
if (i == indexToIgnore || getBit(n, i)) {
counter++;
max = Math.max(counter, max);
} else {
counter = 0;
}
}
return max;
}
public static void main(String[] args) {
int original_number = Integer.MAX_VALUE;
int new_number = longestSequence(original_number);
System.out.println(Integer.toBinaryString(original_number));
System.out.println(new_number);
}
}